﻿using ProjectManageSystemApi.DbEntity;
using ProjectManageSystemApi.Models;
using System.Collections.Generic;

namespace ProjectManageSystemApi.Services
{
    public interface ICostApplyService
    {
        bool Create(CostApplyDto costInfo);
        bool Update(CostApplyDto costInfo);
        bool HasExistCostName(int projectId, string costName, int id = 0);
        bool HasExistById(int costId);
        bool HasAllowUpdate(int costId);
        Models.PageVo<IEnumerable<CostApplyDto>> GetAllByFinancer(Models.PageBo<CostApplyParams> pageBo);
        Models.PageVo<IEnumerable<CostApplyDto>> GetAllByManager(Models.PageBo<CostApplyParams> pageBo);
        Models.PageVo<IEnumerable<CostApplyDto>> GetAll(Models.PageBo<CostApplyParams> pageBo);
        bool UpdateState(int costId, EnumCostApplyInfo state);
        Models.PageVo<IEnumerable<CostApplyDto>> GetMyCostApplyList(Models.PageBo<GetMyCostApplyListBo> pageBo);

        bool ManagerCostCheck(CostCheckData costCheck, long userId);
        bool FinancerCostCheck(CostCheckData costCheck, long userId);

        CostApplyDto GetCostInfoById(int id);


        bool HasStatus(int costId, EnumCostApplyInfo status);
    }
}
